package com.baidu.track.utils;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

import java.util.ArrayList;
import java.util.List;

public class Json2ModelUtil {
    public Json2ModelUtil(){
    }
    /**
     * 将返回的普通model类型的Json字符串解析为model
     * @param <T>
     * @param jsonString
     * @return
     */
    @SuppressWarnings("unchecked")
    public static  <T> T jsonToBean(String jsonString,Class<T> clazz) {
        final Gson gson = new Gson();
        T Info = gson.fromJson(jsonString, clazz);
        return Info;
    }

    /**
     * 将返回的List类型的Json字符串解析为list
     * @param <T>
     * @param jsonString
     * @return
     */
    public static  <T> List<T> jsonToList(String jsonString, Class<T> clazz) {
        Gson gson = new Gson();
        List<T> list = new ArrayList<T>();
        JsonArray array = new JsonParser().parse(jsonString).getAsJsonArray();
        for(final JsonElement elem : array){
            list.add(gson.fromJson(elem, clazz));
        }
        return list;

    }

    /**
     * 将返回的内部嵌套list的model解析为相应的model
     * @param <T>
     * @param jsonString
     * @return
     */
    public static  <T> T jsonToListInModel(String jsonString,Class<T> clazz) {
        final Gson gson = new Gson();
        T Info = gson.fromJson(jsonString, clazz);
        return Info;
    }

    /**
     * 将model类型的list转为json数据格式的字符串
     * @return
     */
    public static  <T> String modelListTojson(List<T> T) {
        final Gson gson = new Gson();
        String jsonStr = gson.toJson(T);
        return jsonStr;
    }
}
